package com.easipass.unifiedconfig;

import java.util.List;

import com.easipass.unifiedconfig.core.Authentication;
import com.easipass.unifiedconfig.core.ConfigDomain;
import com.easipass.unifiedconfig.core.IllegalAuthenticationException;
import com.easipass.unifiedconfig.script.ScriptExecuter;


public interface ConfigManager {

	Parameter getParameter(String domain, String account, String module, String parameterName)
	throws NotFoundException, InsufficientPrivillageException;
	
	Parameter getParameter(UCI uci)
	throws NotFoundException, InsufficientPrivillageException;
	
	Parameter getParameter(String uciStr)
	throws NotFoundException, InsufficientPrivillageException;
	
	ConfigDomain getConfigDomain(String domain);
	
	boolean registerRepository(ConfigDomain repository, Authentication root)
	throws IllegalAuthenticationException;
	
	boolean unregisterRepository(String domain, Authentication root)
	throws IllegalAuthenticationException;
	
	List<String> listDomains();
	
	Session newSession();
	
	ScriptExecuter newScriptExecuter();
	
	ScriptExecuter newScriptExecuter(Session session);
	
}
